/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stud.cp.core.dbaccess;

import java.util.List;

/**
 * Базовый интерфейс доступа к таблице в базе данных.
 * @author Morfant
 */
public interface DAO<T extends Object> {

    /**
     * Получения данных по ID.
     * @param id ID элемента.
     * @return Данные.
     */
    T getById(int id) throws DAOException;

    /**
     * Обновление данных записи.
     * @param entry Запись.
     * @throws DAOException Ошибка, возникшая при сохранение данных.
     */
    void update(T entry) throws DAOException;

    /**
     * Создание новой записи в базе данных.
     * @param entry Запись.
     * @throws DAOException Ошибка создания новых данных.
     */
    int create(T entry) throws DAOException;

    /**
     * Получения списка всех элементов.
     * @return Список данные.
     */
    List<T> getAll() throws DAOException;

    /**
     * Удаление данных.
     * @param id Запись.
     * @throws DAOException Ошибка при удалении.
     */
    void delete(int id) throws DAOException;
}
